
#include "stdlib.h"


//#include "dev_module.h"
#include "iot_node.h"

#include "dev_manager.h"




static  uint8_t ucNumOfNode ;        //节点的个数 ---
//static	uint8_t node_param_save_flash_enable;   //flash 参数保存标记    


dev_topo_t dev_topo[DEV_MAX_NUM]={
    {
        .sub_uid = 0,
        .node_type = IOT_SENSOR_liquid ,   //DEV_CAT1_LAMP,
        .group = 0,
        .channel = dev_chan_485_1,
        .link_channel = dev_chan_485_1,
        .sub_mac = 0x01,
        .link_mac = 0x012345678ABC,

        //.addr = {0x12,0x34,0x56,0x78,0xAB,0xCD},
    },
};


uint8_t devm_get_num(void)
{
    return ucNumOfNode;
}


void  devm_set_num(uint8_t num)
{
   ucNumOfNode =  num;
}





dev_topo_t* devm_get_topoinfo(uint8_t dev_id)
{
    if(dev_id >= DEV_MAX_NUM)
    {
        return NULL;
    }
    return &dev_topo[dev_id];
    
}




/*----------------------------------------------------------------------------------------------------

7.3.1.1子设备（拓扑）物模型
message SubDevice {
    uint32 sub_uid=1;
    uint32 sub_type=2;
    uint32 group_num=3;
    uint32 channel=4;
    uint64 sub_mac=5;
    uint32 link=6;
    uint64 link_mac=7;
}
编号	字段	名称	说明
1	sub_uid	子设备ID	子设备唯一ID（取值范围：1~65535）
{平台自动生成，与设备类型绑定，下发给网关，网关需要保存}
2	sub_type	子设备类型	用于区分不同类型的设备（见附录A）

3	group_num	分组号	取值范围：1~255；注意：组号不能为0。
为了方便同时控制多个子设备又不是广播控制时使用。
4	channel	通信方式 /
通道号	0：PLC
1~7：485
1：485I (第一路485)
2：485II (第二路485)
8：蓝牙
5	sub_mac	子设备地址	设备通讯地址码（除整数地址外，其它设备地址码，都是高字节在前，低字节在后）
根据子设备类型不同表示的含义也不同。
说明如下：
485通讯，地址码为485地址（整数）；
PLC通讯，地址码为PLC节点ID（长度6字节）。
6	link	转接终端
通信方式	二级转接子设备，例如PLC转485。
0：转LED
1~7：转485
1：485I (第一路485)
2：485II (第二路485)
8：转蓝牙
7	link_mac	转接终端
设备地址	转接终端设备地址码（除整数地址外，其它设备地址码，都是高字节在前，低字节在后）
根据转接终端通信方式不同表示的含义也不同。
说明如下：
0 转LED，地址码为LED灯号（>0有效）；
1~7 转485，地址码为485地址（整数）；
8 转蓝牙，地址码为蓝牙地址（6字节）；

--------------------------------------------------------------------------------------------------*/


bool devm_get_node_type(uint16_t sub_uid,uint16_t* node_type )
{
    uint8_t i;

    if(sub_uid >= DEV_MAX_NUM)
    {
        return false;
    }

 //  for( i=DEV_MAX_NUM; i != 0; )  
   for( i=0;i< DEV_MAX_NUM;i++ )
   {
        if( sub_uid == dev_topo[--i].sub_uid )
        {
           *node_type =dev_topo[sub_uid].node_type;
           return true;
        }
   }

 return false;
    
}



















